package main

import (
	"fmt"
	"time"

	"github.com/mackerelio/go-osstat/disk"
)

func main() {
	// 获取磁盘 I/O 统计
	stats, err := disk.Get()
	if err != nil {
		fmt.Printf("获取磁盘 I/O 统计失败: %v\n", err)
		return
	}

	// 打印所有磁盘分区的 I/O 信息
	for _, s := range stats {
		fmt.Printf("磁盘: %s\n", s.Name)
		fmt.Printf("  读取字节数: %d\n", s.ReadBytes)
		fmt.Printf("  写入字节数: %d\n", s.WriteBytes)
		fmt.Printf("  读取次数: %d\n", s.ReadCount)
		fmt.Printf("  写入次数: %d\n", s.WriteCount)
		fmt.Println("------------------------")
	}

	// 计算速率（需要记录上一次的统计数据）
	var lastStats []disk.Stats
	for {
		currentStats, _ := disk.Get()
		if len(lastStats) > 0 {
			for i, s := range currentStats {
				readSpeed := float64(s.ReadBytes-lastStats[i].ReadBytes) / 1e6 // MB/s
				writeSpeed := float64(s.WriteBytes-lastStats[i].WriteBytes) / 1e6
				fmt.Printf("磁盘 %s: 读取速率 %.2f MB/s, 写入速率 %.2f MB/s\n",
					s.Name, readSpeed, writeSpeed)
			}
		}
		lastStats = currentStats
		time.Sleep(1 * time.Second)
	}
}
